package exercise;

import util.JDBCUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

//课后练习1：从控制台向数据库的表customers中插入一条数据
public class Exercise1Test {

    public static void main(String[] args) {
        //向customers插入一条数据
        String sql = "insert into customers(name,email,birth) values(?,?,?)";
        int insertCount = update(sql, "猫星人", "mao@gmail.com", "2020.02.02");
        if (insertCount > 0) {
            System.out.println("插入成功");
        } else {
            System.out.println("插入失败");
        }


    }
    //通用的增删改操作
    public static int update(String sql, Object... args) {

        Connection connection = null;
        PreparedStatement preparedStatement = null;
        try {
            //1.获取数据库的连接
            connection = JDBCUtils.getConnection();
            //2.预编译SQL语句，返回preparedStatement实例
            preparedStatement = connection.prepareStatement(sql);
            //3.填充占位符
            for (int i = 0; i < args.length; i++) {
                preparedStatement.setObject(i+1, args[i]);
            }
            //4.执行操作
            /*
            * 如果执行的是查询操作，有返回结果，则此方法返回true
            * 如果执行的是增删改操作，没有返回结果，则此方法返回false
            * */
            //方式一  preparedStatement.execute() 返回的是一个Boolean类型
            //方式二 preparedStatement.executeUpdate() 返回的修改的次数
            return preparedStatement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //5.资源的关闭
            JDBCUtils.closeResourceConnection(connection, preparedStatement);
        }
        return 0;
    }
}
